package org.droidplanner.android.zz;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;




/**
 * @author ZhaoZheng
 * @description: activity基类封装
 * @date :2024/3/14
 */
public abstract class BaseActivity extends Activity implements View.OnClickListener {
    /**
     * 上下文
     */
    public Context mContext;
    protected Bundle mSavedInstanceState;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.mSavedInstanceState = savedInstanceState;
        /**
         *  隐藏标题栏
         *  设置全屏显示
         *  如果需要隐藏虚拟导航栏（底部系统导航栏）
         */
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

        setContentView(getLayoutId());
        // 设置为横屏
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        mContext = this;
        initView();
        initData();
        initListeners();
    }

    /**
     * 抽象方法，由子类实现，返回布局文件的ID
     */
    public abstract int getLayoutId();

    /**
     * 初始化视图，子类可以重写该方法来初始化视图
     * 初始化通用的视图操作，如findViewById等
     */
    public abstract void initView();

    /**
     * 初始化数据，子类可以重写该方法来初始化数据
     * 初始化通用的数据操作
     */
    public abstract void initData();

    /**
     * 初始化监听器，子类可以重写该方法来初始化各种监听器
     * 初始化通用的监听器，如点击事件监听等
     */
    public abstract void initListeners();

    /**
     * 显示Toast的方法，子类可以直接调用该方法来显示Toast
     */
    public void showToast(String message) {
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }

    /**
     * 启动Activity的方法，子类可以直接调用该方法来启动新的Activity
     */
    public void startActivity(Class<?> cls) {
        Intent intent = new Intent(this, cls);
        startActivity(intent);
    }

    /**
     * 启动Activity并传递数据的方法
     */
    public void startActivityWithExtra(Class<?> cls, String key, String value) {
        Intent intent = new Intent(this, cls);
        intent.putExtra(key, value);
        startActivity(intent);
    }

    /**
     * 隐藏虚拟导航栏
     * @param hasFocus
     */
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        }
    }



}
